﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AjaxControlToolkit;

namespace FrontEndPlus.Módulos.Administración
{
    public partial class wbfrm_Administracion_Rutinas_Ejercicios : System.Web.UI.Page
    {
        #region Variables Globales
        private WCF_Gimnasio.cls_Ejercicio _ejercicio = new WCF_Gimnasio.cls_Ejercicio();
        private WCF_Gimnasio.cls_Entrenador _entrenador = new WCF_Gimnasio.cls_Entrenador();
        private WCF_Gimnasio.cls_Rutinas _rutina = new WCF_Gimnasio.cls_Rutinas();
        private WCF_Gimnasio.ServiceClient _servicio = new WCF_Gimnasio.ServiceClient();      
        private DataTable _registrosRutinas;
        private string MensajeError = "";
        #endregion

        #region Métodos

        #region Método Validar Horario Entrenador
        public void ValidaEntrenador()
        {
            lbl_Mensaje2.Text = string.Empty; 
            _entrenador.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUSuario"]);
            _entrenador.Id_Empleado = Convert.ToInt32(ddl_Entrenadores.SelectedValue);
            _entrenador = (WCF_Gimnasio.cls_Entrenador)_servicio.TraerObjeto(_entrenador);
            if (_entrenador.Horario == ddl_Horarios.SelectedItem.ToString())
            {
                lbl_mensaje.Text = "Entrenador ya está asignado a las " + ddl_Horarios.Items.ToString();
                CargarEntrenadorCombo();
            }           
        }
        #endregion

        #region Método Cargar Entrenador DropDownList
        private void CargarEntrenadorCombo()
        {
            try
            { 
                ddl_Entrenadores.Items.Clear();
                _entrenador.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUSuario"]); 
                ddl_Entrenadores.DataTextField = "Nombre";
                ddl_Entrenadores.DataValueField = "Id_Empleado";
                ddl_Entrenadores.DataSource = _servicio.Listar(1, _entrenador);
                ddl_Entrenadores.DataBind();
                ddl_Entrenadores.DataSource = null;
                ddl_Entrenadores.Items.Insert(0, new ListItem("[ Seleccione ]", "0"));
            }
            catch (Exception ex)
            {
                 lbl_mensaje.Text = ex.Message; 
            }
        }
        #endregion

        #region Método Cargar Ejercicios en DropDownList
        private void CargarEjerciciosCombo()
        {
            try
            {
                ddl_Ejercicios.Items.Clear();
                _ejercicio.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUSuario"]);
                ddl_Ejercicios.DataTextField = "Nombre_Ejercicio";
                ddl_Ejercicios.DataValueField = "Id_Ejercicio";
                ddl_Ejercicios.DataSource = _servicio.Listar(1, _ejercicio).Tables[0];
                ddl_Ejercicios.DataBind();
                ddl_Ejercicios.DataSource = null;
                ddl_Ejercicios.Items.Insert(0, new ListItem("[ Seleccione ]", "0"));
            }
            catch (Exception ex)
            {
                lbl_mensaje.Text = ex.Message;
            }
        }
        #endregion

        #region Método Cargar Rutinas en DropDownList
        private void CargarRutinasCombo()
        {
            try
            {
                ddl_RutAsig.Items.Clear();
                _rutina.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUSuario"]); 
                ddl_RutAsig.DataTextField = "Descripcion";
                ddl_RutAsig.DataValueField = "Id_Rutina";
                ddl_RutAsig.DataSource = _servicio.Listar(2, _rutina).Tables[0];
                ddl_RutAsig.DataBind();
                ddl_RutAsig.DataSource = null;
                ddl_RutAsig.Items.Insert(0, new ListItem("[ Seleccione ]", "0"));
            }
            catch (Exception ex)
            {
                lbl_mensaje.Text = ex.Message;
            }           
        }
        #endregion

        #region Método Cargar Datos
        private void CargarDatos()
        {
            try
            {
                _registrosRutinas = _servicio.Listar(1, _rutina).Tables[0];
                _servicio.Close();
            }
            catch (Exception ex)
            {
                lbl_mensaje.Text = ex.Message;
            }
        }
        #endregion

        #region Cargar las Rutinas en el GridView
        private void CargarRutinasGridView()
        {
            try
            {
                _rutina.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUSuario"]); 
                CargarDatos();
                gv_Rutinas.DataSource = _registrosRutinas;
                gv_Rutinas.DataBind();
            }
            catch (Exception ex)
            {
                lbl_mensaje.Text = ex.Message;
            }
        }
        #endregion

        #region Método Ingresar Rutina
        private void IngresarRutina()
        {
            try
            {                
                _rutina.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUSuario"]); 
                _rutina.Id_Cliente = Convert.ToInt32(txt_CodCliente.Text);
                _rutina.Descripcion = ddl_DescricRutina.SelectedItem.ToString();
                _rutina.Id_Ejercicio = Convert.ToInt32(ddl_Ejercicios.SelectedValue);
                _rutina.Hora = TimeSpan.Parse(txt_HoraAsig.Text);
                _rutina.Fecha = Convert.ToDateTime(txt_FechaRut.Text);
                _servicio.InsertarActualizarRegistro(true, ref MensajeError, _rutina);            
                ddl_Ejercicios.Enabled = false;
                btn_Guardar.Enabled = false;
                tc_Asignaciones.ActiveTab = tc_Asignaciones.Tabs[1];
                CargarRutinasCombo();
                CargarRutinasGridView();
                lbl_Correcto.Text = "Se agregó la Rutina Correctamente";              
            }
            catch (Exception ex)
            {
                lbl_mensaje.Text = ex.Message;
            }
        }
        #endregion

        #region Método Asignar Entrenador
        private void AsignarTrainer()
        {
            try
            {
                _entrenador.IdUsuarioInicioSeccion = Convert.ToInt32(Session["idUSuario"]);
                _entrenador.Id_Empleado = Convert.ToInt32(ddl_Entrenadores.SelectedValue);
                _entrenador.Id_Cliente = Convert.ToInt32(txt_CodCliente.Text);
                _entrenador.Id_Rutina = Convert.ToInt32(ddl_RutAsig.SelectedValue);
                _entrenador.Fecha = DateTime.Now;
                _entrenador.Horario = ddl_Horarios.SelectedItem.ToString();
                _entrenador.Id_Estado = 2;
                _servicio.InsertarActualizarRegistro(true, ref MensajeError, _entrenador);
                lbl_Mensaje2.Text = "Se asignó al entrenador Correctamente";
                _servicio.Close();
            }
            catch (Exception ex)
            {
                Response.Write("Error: Carga incorrecta de datos. Detalles:" + ex.Message);
            }
        }
        #endregion

        #region Método Limpiar los Campos
        public void LimpiarCampos()
        {          
            ddl_Ejercicios.Enabled = true;
            btn_Guardar.Enabled = true;
            txt_CodCliente.Text = string.Empty;
            txt_Apellido.Text = string.Empty;
            ddl_DescricRutina.SelectedIndex = 0;
            txt_Identificacion.Text = string.Empty;
            txt_IdentRut.Text = string.Empty;
            txt_Nombre.Text = string.Empty;
        }
        #endregion

        #endregion

        #region Eventos

        #region Cargar la Página PageLoad
        protected void Page_Load(object sender, EventArgs e)
        {            
            if (!Page.IsPostBack)
            {
                try
                {
                    txt_FechaRut.Text = Convert.ToString(DateTime.Now);
                    CargarRutinasCombo();                    
                    CargarEntrenadorCombo();
                    CargarEjerciciosCombo();
                    CargarRutinasGridView();
                    txt_FechaActual.Text = DateTime.Now.ToString();
                    if (Request.QueryString["idCliente"] != null)
                    {
                        txt_CodCliente.Text = Request.QueryString["idCliente"];
                        txt_Identificacion.Text = Request.QueryString["cedCliente"];
                        txt_IdentRut.Text = Request.QueryString["cedCliente"];
                        txt_Nombre.Text = Request.QueryString["nomCliente"];
                        txt_Apellido.Text = Request.QueryString["apeCliente"];
                    }
                }
                catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
            }
        }
        #endregion       

        #region Evento Botón de Guardar
        protected void btn_Guardar_Click(object sender, EventArgs e)
        {            
            this.IngresarRutina();          
        }
        #endregion

        #region Evento Cambio de indice GridView
        protected void gv_Rutinas_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gv_Rutinas.PageIndex = e.NewPageIndex;
            CargarRutinasGridView();            
        }
        #endregion

        #region Evento Botón de Imagen para Asignar Entrenador
        protected void imgbtn_Asignar_Click(object sender, ImageClickEventArgs e)
        {           
            AsignarTrainer();
        }
        #endregion

        #region Evento Botón de Imagen para Búsqueda Cliente        
        protected void imgbtn_Busqueda_Click(object sender, ImageClickEventArgs e)
        {
         try
            {
                Response.Redirect("wbfrm_Cliente_Buscar_Rutinas.aspx");
            }
         catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
        }
        #endregion

        #region Evento Botón Busqueda de Cliente
        protected void imgbtn_Busqueda_Click1(object sender, ImageClickEventArgs e)
        {
            try
            {
                Response.Redirect("wbfrm_Cliente_Buscar_Rutinas.aspx");
            }
            catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
        }
        #endregion

        #region Evento Seleccionar Entrenador DropDownList
        protected void ddl_Entrenadores_SelectedIndexChanged(object sender, EventArgs e)
        {
            ValidaEntrenador();
        }
        #endregion

        #region Evento Seleccionar Entrenador DropDownList
        protected void ddl_Horarios_SelectedIndexChanged(object sender, EventArgs e)
        {
            ValidaEntrenador();
        }
        #endregion

        #endregion
    }
}